package handler;

import dao.AtorDao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Named;
import javax.persistence.RollbackException;
import pojo.Ator;


/**
 *
 * @author VALERIO
 */
@Named(value = "atorHandler")
@SessionScoped
public class AtorHandler implements Serializable{
    @EJB
    private AtorDao atordao = new AtorDao();
    private Ator ator = new Ator();
    private List<Ator> listaator = new ArrayList<Ator>();
    private Ator excluido;

    public AtorHandler() {}

    public Ator getAtor() {
        return ator;
    }

    public void setAtor(Ator ator) {
        this.ator = ator;
    }

    public AtorDao getAtordao() {
        return atordao;
    }

    public void setAtordao(AtorDao atordao) {
        this.atordao = atordao;
    }

    public Ator getExcluido() {
        return excluido;
    }

    public void setExcluido(Ator excluido) {
        this.excluido = excluido;
    }

    public List<Ator> getListaator() {
        return listaator;
    }

    public void setListaator(List<Ator> listaator) {
        this.listaator = listaator;
    }

    
      public String salvar() {
        atordao.inserir(ator);
        ator = new Ator();
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONFIRMAÇÃO",
                "Cadastrado realizado com sucesso!"));
        return "CadastroAtor.xhtml";
    }

    public List<Ator> listaator() {
        return listaator = atordao.getAll();
    }

    public String removerator(Ator obj) {
        try {
            atordao.excluir(obj);
            cancelar();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
                    "CONFIRMAÇÃO", "Registro removido com sucesso!"));
        } catch (RollbackException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,
                    "ATENÇÃO", "Registro já esta em uso, não pode ser removido."));
        }
        return "CadastroAtor.xhtml";
    }

    public void parametroRemover(ActionEvent event) {
        UIComponent link = event.getComponent();
        UIParameter param = (UIParameter) link.findComponent("idParaRemover");
        excluido = (Ator) param.getValue();
    }

    public void remover() {
        removerator(excluido);
        excluido = null;
    }

    public void alterar(Ator obj) {
        obj = atordao.pesquisar(obj.getAtoCodigo());
        this.ator = obj;
    }

    public String cancelar() {
        ator = new Ator();
        return "CadastroAtor.xhtml";
    }
     
}
